package project.euler.honk.problem.to50;

public final class Problem43 {

	public static long solve() {
		long sum = 0;
		for (int d1 = 1; d1 < 10; d1++) {
			for (int d2 = 0; d2 < 10; d2++) {
				if (d2 == d1)
					continue;
				for (int d3 = 0; d3 < 10; d3++) {
					if (d3 == d1 || d3 == d2)
						continue;
					for (int d4 = 0; d4 < 10; d4 += 2) {
						if (d4 == d1 || d4 == d2 || d4 == d3)
							continue;
						for (int d5 = 0; d5 < 10; d5++) {
							if (d5 == d1 || d5 == d2 || d5 == d3 || d5 == d4)
								continue;
							int tmp2 = d3 + d4 + d5;
							if (tmp2 % 3 != 0)
								continue;
							for (int d6 = 0; d6 < 10; d6 += 5) {
								if (d6 == d1 || d6 == d2 || d6 == d3 || d6 == d4 || d6 == d5)
									continue;
								for (int d7 = 0; d7 < 10; d7++) {
									if (d7 == d1 || d7 == d2 || d7 == d3 || d7 == d4 || d7 == d5 || d7 == d6)
										continue;
									int tmp4 = 100 * d5 + 10 * d6 + d7;
									if (tmp4 % 7 != 0)
										continue;
									for (int d8 = 0; d8 < 10; d8++) {
										if (d8 == d1 || d8 == d2 || d8 == d3 || d8 == d4 || d8 == d5 || d8 == d6 || d8 == d7)
											continue;
										int tmp5 = 100 * d6 + 10 * d7 + d8;
										if (tmp5 % 11 != 0)
											continue;
										for (int d9 = 0; d9 < 10; d9++) {
											if (d9 == d1 || d9 == d2 || d9 == d3 || d9 == d4 || d9 == d5 || d9 == d6 || d9 == d7 || d9 == d8)
												continue;
											int tmp6 = 100 * d7 + 10 * d8 + d9;
											if (tmp6 % 13 != 0)
												continue;
											for (int d10 = 0; d10 < 10; d10++) {
												if (d10 == d1 || d10 == d2 || d10 == d3 || d10 == d4 || d10 == d5 || d10 == d6 || d10 == d7 || d10 == d8
														|| d10 == d9)
													continue;
												int tmp = 100 * d8 + 10 * d9 + d10;
												if (tmp % 17 == 0) {
													sum += 1000000000L * d1 + 100000000L * d2 + 10000000L * d3 + 1000000L * d4 + 100000L * d5 + 10000L * d6 + 1000L * d7 + 100L * d8 + 10L * d9 + d10;
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		return sum;
	}

	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		long result = solve();
		long end = System.currentTimeMillis();
		System.out.println("Result: " + result + " Time: " + (end - start));
	}

}
